This invention relates generally to disk-based storage systems, and more particularly to simulation of storage systems for performance validation, benchmarking, test and evaluation and for customer solution validation.
It is frequently desirable to simulate real-world disk-based storage systems. For instance, disk manufacturers and other developers of software to upgrade storage system performance or to address other system issues need to test and validate the software prior to release. This requires a test platform that mirrors the system(s) for which the software is being developed so that the software may be tested under realistic operating conditions. A common approach to simulate a real-world system is to create a workload on a test system by controlling parameters of the system such as the numbers and types of input/output (I/O) threads, whether the I/O is random or sequential, whether the data is unique or duplicate data, whether the workload is uniform or mixed, namespace access patterns, etc. All of these parameters are logical concepts, but they ignore one of the most important factors that influence I/O performance, which is the actual layout of data on the physical disk. Known simulation approaches afford no way to control physical data layout, and do not effectively simulate real world conditions.
Storage systems behave differently depending upon their age and the amount of data on their disks. In a stable state, the system disks may reach a substantially full state where old data is continuously being deleted to free space for the ingestion of new data. Multiple deletes and ingests of data result in external fragmentation of the data where the data may be written in multiple different physically spaced (non-contiguous) blocks. External fragmentation impacts data access times and is a principal reason why rotating disk systems exhibit unique I/O behavior based upon the location of data. Data systems having several deletions and insertions that result in fragmented, physically spaced data are referred to as “aged systems”.
In order to evaluate the performance of various aged storage systems, and to test and validate new releases and upgrades of software for such systems, it is desirable to be able to quickly simulate various aged systems for testing different use cases by affording easy control and management of the physical configuration of data on the test systems. It is to these ends that the present invention is directed.